﻿@using DatabaseLibrary;
@* Quitar esta sección si se utilizan agrupaciones *@
@section Scripts {
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

}

@{
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "Comparativo eleccion";

    // Implementacion de seguridad
    WebSecurity.RequireAuthenticatedUser();

    if (!WebSecurity.IsAuthenticated)
    {
        Response.Redirect("../Account/login.cshtml");
    }

    if (string.IsNullOrEmpty(Convert.ToString(Session["Cbo_empresa"])))
    {
        if (string.IsNullOrEmpty(Request.Form["Cbo_empresa"]))
        {
            Response.Redirect("Consulta_Candidatos.cshtml");
        }
    }

    // Inicializar variables de página generales    
    var empresa = string.Empty;
    var usuario = string.Empty;

    var Cbo_eleccion1 = string.Empty;
    var Cbo_eleccion2 = string.Empty;

    // Validación de la instalación    

    if (!string.IsNullOrEmpty(Request.Form["Cbo_empresa"]))
    {
        empresa = Request.Form["Cbo_empresa"].ToString();
        Session["Cbo_empresa"] = empresa;
    }
    else
    {
        empresa = Session["Cbo_empresa"].ToString();
    }

    var lista_eleccionesCandidato = new List<EleccionesCandidatoReporte>();

    var lista_comparativa1 = new List<EleccionesComparativoReporte>();
    var lista_comparativa2 = new List<EleccionesComparativoReporte>();

    Cbo_eleccion1 = Request.Form["Cbo_eleccion1"];
    Cbo_eleccion2 = Request.Form["Cbo_eleccion2"];

    if (IsPost && !string.IsNullOrEmpty(Cbo_eleccion1) && !string.IsNullOrEmpty(Cbo_eleccion2))
    {
        AntiForgery.Validate();

        if (Cbo_eleccion1.IsEmpty() || Cbo_eleccion1.Equals("0"))
        {
            ModelState.AddError("Cbo_eleccion1", "Debe seleccionar una eleccion.");
            ModelState.AddFormError("Debe seleccionar una eleccion.");
        }

        if (Cbo_eleccion2.IsEmpty() || Cbo_eleccion2.Equals("0"))
        {
            ModelState.AddError("Cbo_eleccion2", "Debe seleccionar una eleccion.");
            ModelState.AddFormError("Debe seleccionar una eleccion.");
        }

        if (Validation.IsValid())
        {
            Reporte Obj_RptComparativo1 = new Reporte();
            Obj_RptComparativo1.objEleccionesComparativoReporte.id_eleccion = int.Parse(Cbo_eleccion1);
            lista_comparativa1 = Obj_RptComparativo1.consultar_Comparativo_x_votacion(1);

            Reporte Obj_RptComparativo2 = new Reporte();
            Obj_RptComparativo1.objEleccionesComparativoReporte.id_eleccion = int.Parse(Cbo_eleccion2);
            lista_comparativa2 = Obj_RptComparativo1.consultar_Comparativo_x_votacion(1);

            Session["idEleccion_Lst1"] = Cbo_eleccion1;
            Session["idEleccion_Lst2"] = Cbo_eleccion2;
            //Session["Cbo_empresa"] = empresa;
        }

    }
    else
    {
        Session["idEleccion_Lst1"] = null;
        Session["idEleccion_Lst2"] = null;
        //Session["Cbo_empresa"] = null;
    }


    Reporte Obj_candidatosRpt = new Reporte();
    Obj_candidatosRpt.objEleccionescandidatoreporte.id_empresa = int.Parse(empresa);
    lista_eleccionesCandidato = Obj_candidatosRpt.consultar_elecciones_x_empresa(1);
          
}

@if (!User.IsInRole("Admin") && !User.IsInRole("Candidato"))
{
    ModelState.AddError("errorGeneral", "El usuario: " + User.Identity.Name + " NO tiene permisos sobre este formulario.");
    @Html.ValidationMessage("errorGeneral")
}
else
{        
    <form method="post">
        @AntiForgery.GetHtml()
        @Html.ValidationSummary("Corrija los siguientes errores e inténtelo de nuevo.", excludeFieldErrors: true, htmlAttributes: null)
        <fieldset>
            <legend>Consultar elecciones</legend>

            <table border="1" style="border-color: #000">
                <tr>
                    <td>
                        <label for="Cbo_eleccion1" @if (!ModelState.IsValidField("Cbo_eleccion1"))
                                                   {<text> class="error-label" </text> }>
                            Lista 1 - Elecciones</label>
                        <select id="Cbo_eleccion1" name="Cbo_eleccion1" @Validation.For("Cbo_eleccion1")>

                            <option value="0" selected="selected">Seleccione</option>

                            @foreach (var propiedad in lista_eleccionesCandidato)
                            {
                                if (!string.IsNullOrEmpty((string)Session["idEleccion_Lst1"]))
                                {
                                    if (Convert.ToInt32(Session["idEleccion_Lst1"]).Equals(propiedad.id_eleccion))
                                    {
                                <option value="@propiedad.id_eleccion" selected="selected">@propiedad.titulo</option>      
                                    }
                                    else
                                    { 
                                <option value="@propiedad.id_eleccion ">@propiedad.titulo</option>   
                                    }
                                }
                                else
                                {                                                                
                                <option value="@propiedad.id_eleccion ">@propiedad.titulo</option>    
                                }
                            }
                        </select>
                        @Html.ValidationMessage("Cbo_eleccion1")
                    </td>

                    <td>

                        <label for="Cbo_eleccion2" @if (!ModelState.IsValidField("Cbo_eleccion2"))
                                                   {<text> class="error-label" </text> }>
                            Lista 2 - Elecciones</label>
                        <select id="Cbo_eleccion2" name="Cbo_eleccion2" @Validation.For("Cbo_eleccion2")>
                            <option value="0" selected="selected">Seleccione</option>

                            @foreach (var propiedad in lista_eleccionesCandidato)
                            {
                                if (!string.IsNullOrEmpty((string)Session["idEleccion_Lst2"]))
                                {
                                    if (Convert.ToInt32(Session["idEleccion_Lst2"]).Equals(propiedad.id_eleccion))
                                    {
                                <option value="@propiedad.id_eleccion" selected="selected">@propiedad.titulo</option>      
                                    }
                                    else
                                    { 
                                <option value="@propiedad.id_eleccion ">@propiedad.titulo</option>   
                                    }
                                }
                                else
                                {                                                                
                                <option value="@propiedad.id_eleccion ">@propiedad.titulo</option>    
                                }
                            }
                        </select>
                        @Html.ValidationMessage("Cbo_eleccion2")

                    </td>
                </tr>
                <tr>
                    <td>
                        <label><b>Total de votos:</b></label>
                        @{                        
                            foreach (var element in lista_comparativa1)
                            {                                                                       
                            @: @element.nombre  @element.votos
                            @: <br />                    
                            }
                        }
                    </td>
                    <td>
                        <label><b>Total de votos:</b></label>
                        @{                        
                            foreach (var element in lista_comparativa2)
                            {                                                                       
                            @: @element.nombre  @element.votos
                            @: <br />                    
                            }
                        }
                    </td>
                </tr>
            </table>
            <br />
            @Html.ValidationMessage("errorGeneral")
            <br />
            <input type="submit" value="Comparar" />
        </fieldset>
    </form>
}